Skip to main content

Custom AMI Support in Cluster and Node Group Creation

The Custom AMI Support feature enables users to create Kubernetes clusters and node groups using custom Amazon Machine Images (AMIs). This provides the flexibility to deploy clusters with pre-configured environments, software, and security settings tailored to specific organizational requirements.


Feature Overview

With Custom AMI Support, you can:

  • Use custom AMIs during EKS cluster and node group creation
  • Pre-configure nodes with software, configurations, or patches before deployment
  • Simplify deployments using images that meet security and compliance standards
  • Choose from any AMIs you have created and own within your AWS account
warning

Karpenter V1 does not support Ubuntu systems for automatic node scaling. When using Karpenter, select other supported operating systems for optimal functionality.


Supported AMI Families

Atmosly supports the following AMI families for AWS EKS clusters:

AMI FamilyDescriptionKarpenter Support
AL2Amazon Linux 2 — EKS-optimized, widely used defaultYes
AL2023Amazon Linux 2023 — latest Amazon Linux with improved securityYes
UbuntuUbuntu-based EKS nodesNo (Karpenter V1)
BottlerocketAWS-purpose-built container OS with minimal attack surfaceYes
Windows2019Windows Server 2019 for Windows container workloadsNo
Windows2022Windows Server 2022 for Windows container workloadsNo

Custom AMI Creation Process

1. Create an EC2 Instance

Configure your instance with the desired software, security patches, and configurations.

2. Install Kubernetes Components

Ensure the following are installed and configured:

  • kubelet — Kubernetes node agent
  • AWS EKS agent — For EKS cluster integration
  • Container runtime (containerd or Docker)

3. Create the AMI

Create an AMI snapshot of the configured EC2 instance from the AWS Console or CLI.

4. Store the AMI

The custom AMI is stored in your AWS region and becomes available for EKS deployments.


Using Custom AMI in Node Group Creation

When creating a new node group, specify the Custom AMI ID in the configuration:

  1. Navigate to the cluster's Node Groups section.
  2. Click Add Node Group.
  3. In the AMI field, select your custom AMI from the dropdown or enter the AMI ID.
  4. The AMI will provision all worker nodes in the node group.

Compatibility Check: The system automatically verifies:

  • AMI compatibility with the selected Kubernetes version
  • Presence of required kubelet and AWS EKS agent components

If the AMI is incompatible, node group creation will fail with an error prompting you to update your image.


Using Custom AMI in Cluster Creation

During cluster setup:

  1. In the AMI selection step, select your custom AMI from the dropdown list.
  2. All nodes launched in the cluster will use the specified AMI.
  3. This ensures consistent configuration and environment setup across the cluster.

Instance Types

Custom AMIs can be paired with any supported EC2 instance type:

CategoryExamples
General PurposeT3, T3a, T4g (burstable); M5, M5a, M5n, M5zn; A1
Compute OptimizedC5, C5a, C5n; C6g, C6i
Memory OptimizedR4; R5, R5a, R5b, R5n; R6g; X1, X1e
Storage OptimizedI3, I3en; D2, D3, D3en; H1
Accelerated ComputingP3, P4 (GPU); G4 (graphics); F1 (FPGA); Inf1 (inference)
ARM-basedAWS Graviton processors (A1, T4g, M6g, C6g, R6g)

You can choose between On-Demand or Spot instances for cost optimization.


EBS Volume Types

When using custom AMIs, you can also configure the EBS volume type for node storage:

Volume TypeDescription
gp3General purpose SSD (default, recommended)
gp2Previous generation general purpose SSD
io1Provisioned IOPS SSD for high-performance workloads
io2Latest provisioned IOPS SSD with higher durability
st1Throughput-optimized HDD for frequently accessed data
sc1Cold HDD for infrequently accessed data
standardPrevious generation magnetic storage

Notes

  • Custom AMIs are only supported for AWS (EKS) clusters. For GCP (GKE) clusters, use the built-in image types (COS_CONTAINERD, UBUNTU, etc.).
  • Regularly update your custom AMIs to include the latest security patches and Kubernetes components.
  • Test custom AMIs in a non-production cluster before deploying to production.